﻿//611. 有效三角形的个数
//给定一个包含非负整数的数组 nums ，返回其中可以组成三角形三条边的三元组个数。



class Solution {
public:
    int triangleNumber(vector<int>& nums)
    {
        // a+b>c
        sort(nums.begin(), nums.end());
        int ans = 0;
        int n = nums.size();
        for (int i = 2; i < n; i++)
        {
            int x = nums[i];
            int left = 0, right = i - 1;
            while (left < right)
            {
                int sum = nums[left] + nums[right];
                if (sum > x)
                {
                    ans += right - left;
                    right--;
                }
                else
                {
                    left++;
                }
            }
        }
        return ans;

    }
};